#ifndef TEST_OP_H
#define TEST_OP_H

#include <lib.h>
#if defined(test_op_EXPORTS)
#define TEST_OP_API SYMBOL_EXPORT
#elif TEST_OP_SHARED_LIBRARY
#define TEST_OP_API SYMBOL_IMPORT
#else
#define TEST_OP_API
#endif

#include <memory>

namespace test::op
{
    TEST_OP_API int op(char c, int x, int y);

    class op
    {
    public:
        virtual ~op() = default;
        virtual int operator()(int x, int y) = 0;
        TEST_OP_API static std::shared_ptr<op> create(char c);
    };
}

#endif